<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: ArLaserLogger Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.4</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classArLaserLogger.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classArLaserLogger-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ArLaserLogger Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>This class can be used to create log files for the laser mapper.  
 <a href="classArLaserLogger.html#details">More...</a></p>

<p><code>#include &lt;ArLaserLogger.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aed914ae4f87562b479ebde3a0b2bc844"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed914ae4f87562b479ebde3a0b2bc844"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#aed914ae4f87562b479ebde3a0b2bc844">addGoal</a> (void)</td></tr>
<tr class="memdesc:aed914ae4f87562b479ebde3a0b2bc844"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a goal where the robot is at the moment. <br /></td></tr>
<tr class="separator:aed914ae4f87562b479ebde3a0b2bc844"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4130b7bbe7d31b18cc3e4cfdebb38bad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a4130b7bbe7d31b18cc3e4cfdebb38bad">addInfoToLog</a> (const char *str,...)</td></tr>
<tr class="memdesc:a4130b7bbe7d31b18cc3e4cfdebb38bad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a string to the log file without a tag for where or when we are.  <a href="#a4130b7bbe7d31b18cc3e4cfdebb38bad">More...</a><br /></td></tr>
<tr class="separator:a4130b7bbe7d31b18cc3e4cfdebb38bad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd67438efbbf9db3a8d8c887dd9a8889"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#acd67438efbbf9db3a8d8c887dd9a8889">addInfoToLogPlain</a> (const char *str)</td></tr>
<tr class="memdesc:acd67438efbbf9db3a8d8c887dd9a8889"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as addToInfo, but does it without marking robot position.  <a href="#acd67438efbbf9db3a8d8c887dd9a8889">More...</a><br /></td></tr>
<tr class="separator:acd67438efbbf9db3a8d8c887dd9a8889"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad551fb95d5451da5866cbab25987e590"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#ad551fb95d5451da5866cbab25987e590">addTagToLog</a> (const char *str,...)</td></tr>
<tr class="memdesc:ad551fb95d5451da5866cbab25987e590"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a string to the log file with a tag at the given moment.  <a href="#ad551fb95d5451da5866cbab25987e590">More...</a><br /></td></tr>
<tr class="separator:ad551fb95d5451da5866cbab25987e590"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21ebf19cc66b73847504e094ec4872b8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a21ebf19cc66b73847504e094ec4872b8">addTagToLogPlain</a> (const char *str)</td></tr>
<tr class="memdesc:a21ebf19cc66b73847504e094ec4872b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same ass addToLog, but no varargs, wrapper for java.  <a href="#a21ebf19cc66b73847504e094ec4872b8">More...</a><br /></td></tr>
<tr class="separator:a21ebf19cc66b73847504e094ec4872b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8d94145940256823ad2490a3b021f4b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#ad8d94145940256823ad2490a3b021f4b">ArLaserLogger</a> (<a class="el" href="classArRobot.html">ArRobot</a> *robot, <a class="el" href="classArLaser.html">ArLaser</a> *laser, double distDiff, double degDiff, const char *fileName, bool addGoals=false, <a class="el" href="classArJoyHandler.html">ArJoyHandler</a> *joyHandler=NULL, const char *baseDirectory=NULL, bool useReflectorValues=false, <a class="el" href="classArRobotJoyHandler.html">ArRobotJoyHandler</a> *robotJoyHandler=NULL, const std::map&lt; std::string, <a class="el" href="classArRetFunctor3.html">ArRetFunctor3</a>&lt; int, <a class="el" href="classArTime.html">ArTime</a>, <a class="el" href="classArPose.html">ArPose</a> *, <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; *, <a class="el" href="structArStrCaseCmpOp.html">ArStrCaseCmpOp</a> &gt; *extraLocationData=NULL, std::list&lt; <a class="el" href="classArLaser.html">ArLaser</a> * &gt; *extraLasers=NULL)</td></tr>
<tr class="memdesc:ad8d94145940256823ad2490a3b021f4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#ad8d94145940256823ad2490a3b021f4b">More...</a><br /></td></tr>
<tr class="separator:ad8d94145940256823ad2490a3b021f4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a198c9eff1ee9f5ce32a586d430b2af72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a198c9eff1ee9f5ce32a586d430b2af72"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a198c9eff1ee9f5ce32a586d430b2af72">getDegDiff</a> (void)</td></tr>
<tr class="memdesc:a198c9eff1ee9f5ce32a586d430b2af72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the degrees to turn at which the robot will take a new reading. <br /></td></tr>
<tr class="separator:a198c9eff1ee9f5ce32a586d430b2af72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9804317e3c7512eeae9904da96674e1e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9804317e3c7512eeae9904da96674e1e"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a9804317e3c7512eeae9904da96674e1e">getDistDiff</a> (void)</td></tr>
<tr class="memdesc:a9804317e3c7512eeae9904da96674e1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the distance at which the robot will take a new reading. <br /></td></tr>
<tr class="separator:a9804317e3c7512eeae9904da96674e1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25e3f2aa0a2f528ff2ca39e096217210"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25e3f2aa0a2f528ff2ca39e096217210"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a25e3f2aa0a2f528ff2ca39e096217210">setDegDiff</a> (double degDiff)</td></tr>
<tr class="memdesc:a25e3f2aa0a2f528ff2ca39e096217210"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the degrees to turn at which the robot will take a new reading. <br /></td></tr>
<tr class="separator:a25e3f2aa0a2f528ff2ca39e096217210"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5f7cefe7bea23d31c6c78d1a68c0915"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5f7cefe7bea23d31c6c78d1a68c0915"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#ab5f7cefe7bea23d31c6c78d1a68c0915">setDistDiff</a> (double distDiff)</td></tr>
<tr class="memdesc:ab5f7cefe7bea23d31c6c78d1a68c0915"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the distance at which the robot will take a new reading. <br /></td></tr>
<tr class="separator:ab5f7cefe7bea23d31c6c78d1a68c0915"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45eedca8e82d2b7557f98428e8dc2f5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45eedca8e82d2b7557f98428e8dc2f5c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a45eedca8e82d2b7557f98428e8dc2f5c">takeNewReadings</a> (bool takeNew)</td></tr>
<tr class="memdesc:a45eedca8e82d2b7557f98428e8dc2f5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets if we're taking old (scan1:) readings. <br /></td></tr>
<tr class="separator:a45eedca8e82d2b7557f98428e8dc2f5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b20f09e8ad9893fe8f6c20600d8f76c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b20f09e8ad9893fe8f6c20600d8f76c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a0b20f09e8ad9893fe8f6c20600d8f76c">takeOldReadings</a> (bool takeOld)</td></tr>
<tr class="memdesc:a0b20f09e8ad9893fe8f6c20600d8f76c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets if we're taking old (sick1:) readings. <br /></td></tr>
<tr class="separator:a0b20f09e8ad9893fe8f6c20600d8f76c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac95dbfe9306efe3305e484703b241c21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac95dbfe9306efe3305e484703b241c21"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#ac95dbfe9306efe3305e484703b241c21">takeReading</a> (void)</td></tr>
<tr class="memdesc:ac95dbfe9306efe3305e484703b241c21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicitly tells the robot to take a reading. <br /></td></tr>
<tr class="separator:ac95dbfe9306efe3305e484703b241c21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcd9091ff9b844c044527231e2fc41f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcd9091ff9b844c044527231e2fc41f1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#afcd9091ff9b844c044527231e2fc41f1">takingNewReadings</a> (void)</td></tr>
<tr class="memdesc:afcd9091ff9b844c044527231e2fc41f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets if we're taking new (scan1:) readings. <br /></td></tr>
<tr class="separator:afcd9091ff9b844c044527231e2fc41f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75fc2c03430190f8cd5a3af1538f58d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75fc2c03430190f8cd5a3af1538f58d5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a75fc2c03430190f8cd5a3af1538f58d5">takingOldReadings</a> (void)</td></tr>
<tr class="memdesc:a75fc2c03430190f8cd5a3af1538f58d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets if we're taking old (sick1:) readings. <br /></td></tr>
<tr class="separator:a75fc2c03430190f8cd5a3af1538f58d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ea88347c3edc52d64ac63c3957d5b60"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ea88347c3edc52d64ac63c3957d5b60"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a2ea88347c3edc52d64ac63c3957d5b60">wasFileOpenedSuccessfully</a> (void)</td></tr>
<tr class="memdesc:a2ea88347c3edc52d64ac63c3957d5b60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sees if the file was opened successfully. <br /></td></tr>
<tr class="separator:a2ea88347c3edc52d64ac63c3957d5b60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0991feacd4e7c99527acc29766d21b66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0991feacd4e7c99527acc29766d21b66"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a0991feacd4e7c99527acc29766d21b66">~ArLaserLogger</a> ()</td></tr>
<tr class="memdesc:a0991feacd4e7c99527acc29766d21b66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a0991feacd4e7c99527acc29766d21b66"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a0a91df9afd695a6a60398ea36da262eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a91df9afd695a6a60398ea36da262eb"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>goalKeyCallback</b> (void)</td></tr>
<tr class="separator:a0a91df9afd695a6a60398ea36da262eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abae95703a2e50a01d1fb1924e9d25335"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abae95703a2e50a01d1fb1924e9d25335"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>internalAddGoal</b> (void)</td></tr>
<tr class="separator:abae95703a2e50a01d1fb1924e9d25335"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25adde64faddb53d467449fb6d15e5b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25adde64faddb53d467449fb6d15e5b2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>internalPrintLaserPoseAndConf</b> (<a class="el" href="classArLaser.html">ArLaser</a> *laser, int laserNumber)</td></tr>
<tr class="separator:a25adde64faddb53d467449fb6d15e5b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fead4fec721e713632845dc65a29475"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fead4fec721e713632845dc65a29475"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>internalPrintPos</b> (<a class="el" href="classArPose.html">ArPose</a> encoderPoseTaken, <a class="el" href="classArPose.html">ArPose</a> goalPoseTaken, <a class="el" href="classArTime.html">ArTime</a> timeTaken)</td></tr>
<tr class="separator:a8fead4fec721e713632845dc65a29475"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2be0b2e8120ee205ef7ccc2545d5bba8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a2be0b2e8120ee205ef7ccc2545d5bba8">internalTakeLaserReading</a> (<a class="el" href="classArLaser.html">ArLaser</a> *laser, int laserNumber)</td></tr>
<tr class="separator:a2be0b2e8120ee205ef7ccc2545d5bba8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a254535e5b664b87a189dc3b95e7caa8b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a254535e5b664b87a189dc3b95e7caa8b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>internalTakeReading</b> (void)</td></tr>
<tr class="separator:a254535e5b664b87a189dc3b95e7caa8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a231f4532de6f7a6431577a22d409fd26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a231f4532de6f7a6431577a22d409fd26"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>internalWriteTags</b> (void)</td></tr>
<tr class="separator:a231f4532de6f7a6431577a22d409fd26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9c5a6e351d68877f6c8c49f0360bf19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9c5a6e351d68877f6c8c49f0360bf19"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>loopPacketHandler</b> (<a class="el" href="classArRobotPacket.html">ArRobotPacket</a> *packet)</td></tr>
<tr class="separator:af9c5a6e351d68877f6c8c49f0360bf19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08a3c39a68ea790d04d975c038c1f253"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08a3c39a68ea790d04d975c038c1f253"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArLaserLogger.html#a08a3c39a68ea790d04d975c038c1f253">robotTask</a> (void)</td></tr>
<tr class="memdesc:a08a3c39a68ea790d04d975c038c1f253"><td class="mdescLeft">&#160;</td><td class="mdescRight">The task which gets attached to the robot. <br /></td></tr>
<tr class="separator:a08a3c39a68ea790d04d975c038c1f253"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:af618ebd88b42cdc9326941a39848fee6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af618ebd88b42cdc9326941a39848fee6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myAddGoalExplicit</b></td></tr>
<tr class="separator:af618ebd88b42cdc9326941a39848fee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ff81186c1efe45abd5a89538ec93ab6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ff81186c1efe45abd5a89538ec93ab6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myAddGoalKeyboard</b></td></tr>
<tr class="separator:a6ff81186c1efe45abd5a89538ec93ab6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a394260969af35a251f0335387bebdb51"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a394260969af35a251f0335387bebdb51"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myAddGoals</b></td></tr>
<tr class="separator:a394260969af35a251f0335387bebdb51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16c053d4a6e31193b09d9319fa488855"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16c053d4a6e31193b09d9319fa488855"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>myBaseDirectory</b></td></tr>
<tr class="separator:a16c053d4a6e31193b09d9319fa488855"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a661ea1fb25d2bfa9e2f6f18259bb724f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a661ea1fb25d2bfa9e2f6f18259bb724f"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>myDegDiff</b></td></tr>
<tr class="separator:a661ea1fb25d2bfa9e2f6f18259bb724f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa902e31d7b523e95e4b2cb361774fb0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa902e31d7b523e95e4b2cb361774fb0e"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>myDistDiff</b></td></tr>
<tr class="separator:aa902e31d7b523e95e4b2cb361774fb0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1c3be4fc41530209a8b33ace7db7e53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1c3be4fc41530209a8b33ace7db7e53"></a>
std::map&lt; std::string, <a class="el" href="classArRetFunctor3.html">ArRetFunctor3</a>&lt; int, <a class="el" href="classArTime.html">ArTime</a>, <a class="el" href="classArPose.html">ArPose</a> *, <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; *, <a class="el" href="structArStrCaseCmpOp.html">ArStrCaseCmpOp</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myExtraLocationData</b></td></tr>
<tr class="separator:aa1c3be4fc41530209a8b33ace7db7e53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae377259fbf9a37a96692d7298a66fa3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae377259fbf9a37a96692d7298a66fa3a"></a>
FILE *&#160;</td><td class="memItemRight" valign="bottom"><b>myFile</b></td></tr>
<tr class="separator:ae377259fbf9a37a96692d7298a66fa3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c7f23975c499bb57b09103c88507878"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c7f23975c499bb57b09103c88507878"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>myFileName</b></td></tr>
<tr class="separator:a4c7f23975c499bb57b09103c88507878"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3353bbd9defad34429c9ab62b49d846c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3353bbd9defad34429c9ab62b49d846c"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myFirstGoalTaken</b></td></tr>
<tr class="separator:a3353bbd9defad34429c9ab62b49d846c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af94b8b9751cb875170c57540ed0ec2c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af94b8b9751cb875170c57540ed0ec2c9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myFirstTaken</b></td></tr>
<tr class="separator:af94b8b9751cb875170c57540ed0ec2c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66d750d5e8001e53f7076a4438d14bd6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66d750d5e8001e53f7076a4438d14bd6"></a>
<a class="el" href="classArFunctorC.html">ArFunctorC</a>&lt; <a class="el" href="classArLaserLogger.html">ArLaserLogger</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myGoalKeyCB</b></td></tr>
<tr class="separator:a66d750d5e8001e53f7076a4438d14bd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab588e83c1be3127509182be7ea06a7f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab588e83c1be3127509182be7ea06a7f3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myIncludeRawEncoderPose</b></td></tr>
<tr class="separator:ab588e83c1be3127509182be7ea06a7f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3386db01c23574478826c66e043e715c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3386db01c23574478826c66e043e715c"></a>
std::list&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myInfos</b></td></tr>
<tr class="separator:a3386db01c23574478826c66e043e715c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cb5435a42509acb046bb7e0815d7977"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7cb5435a42509acb046bb7e0815d7977"></a>
<a class="el" href="classArJoyHandler.html">ArJoyHandler</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myJoyHandler</b></td></tr>
<tr class="separator:a7cb5435a42509acb046bb7e0815d7977"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa185d769ee52851094d0713125c3d4cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa185d769ee52851094d0713125c3d4cb"></a>
<a class="el" href="classArLaser.html">ArLaser</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myLaser</b></td></tr>
<tr class="separator:aa185d769ee52851094d0713125c3d4cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9abc2c1868dfcc54154527c3ebcf0d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9abc2c1868dfcc54154527c3ebcf0d0"></a>
std::list&lt; <a class="el" href="classArLaser.html">ArLaser</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myLasers</b></td></tr>
<tr class="separator:aa9abc2c1868dfcc54154527c3ebcf0d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18720fe2765e0f6c871321a6245ee604"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18720fe2765e0f6c871321a6245ee604"></a>
<a class="el" href="classArPose.html">ArPose</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myLast</b></td></tr>
<tr class="separator:a18720fe2765e0f6c871321a6245ee604"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa15b46dbc3e18fa73dbd2b16c9beabc6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa15b46dbc3e18fa73dbd2b16c9beabc6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myLastAddGoalKeyboard</b></td></tr>
<tr class="separator:aa15b46dbc3e18fa73dbd2b16c9beabc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84befbbeee2aa5a87e05a6ca613c0e5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84befbbeee2aa5a87e05a6ca613c0e5f"></a>
<a class="el" href="classArPose.html">ArPose</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myLastGoalTakenPose</b></td></tr>
<tr class="separator:a84befbbeee2aa5a87e05a6ca613c0e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb683cf68450e516b2277c33a2a49ad8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb683cf68450e516b2277c33a2a49ad8"></a>
<a class="el" href="classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myLastGoalTakenTime</b></td></tr>
<tr class="separator:abb683cf68450e516b2277c33a2a49ad8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f80a99a24099b52aecb4d01b84b368d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f80a99a24099b52aecb4d01b84b368d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myLastJoyButton</b></td></tr>
<tr class="separator:a2f80a99a24099b52aecb4d01b84b368d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44345b3c865b10bbbbb1ad94d2cd43fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44345b3c865b10bbbbb1ad94d2cd43fa"></a>
unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>myLastLoops</b></td></tr>
<tr class="separator:a44345b3c865b10bbbbb1ad94d2cd43fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a174ea4884d600d931bbaa34930a61628"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a174ea4884d600d931bbaa34930a61628"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myLastRobotJoyButton</b></td></tr>
<tr class="separator:a174ea4884d600d931bbaa34930a61628"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16ea03810e7ced3f00b45338a68afe87"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16ea03810e7ced3f00b45338a68afe87"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>myLastVel</b></td></tr>
<tr class="separator:a16ea03810e7ced3f00b45338a68afe87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cc43a2802c40a03e00b50a29f52086c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cc43a2802c40a03e00b50a29f52086c"></a>
<a class="el" href="classArRetFunctor1C.html">ArRetFunctor1C</a>&lt; bool, <a class="el" href="classArLaserLogger.html">ArLaserLogger</a>, <a class="el" href="classArRobotPacket.html">ArRobotPacket</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myLoopPacketHandlerCB</b></td></tr>
<tr class="separator:a6cc43a2802c40a03e00b50a29f52086c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae08bd6139fb4cdbea5188399e8ba1758"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae08bd6139fb4cdbea5188399e8ba1758"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myNewReadings</b></td></tr>
<tr class="separator:ae08bd6139fb4cdbea5188399e8ba1758"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44b08828447fe6fddbee31924fa8a28d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44b08828447fe6fddbee31924fa8a28d"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myNumGoal</b></td></tr>
<tr class="separator:a44b08828447fe6fddbee31924fa8a28d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f9af33319779a9f98d5b889de92cab7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f9af33319779a9f98d5b889de92cab7"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myOldReadings</b></td></tr>
<tr class="separator:a3f9af33319779a9f98d5b889de92cab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3147223c394269ad6aa17a37bf51c29b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3147223c394269ad6aa17a37bf51c29b"></a>
<a class="el" href="classArRobot.html">ArRobot</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myRobot</b></td></tr>
<tr class="separator:a3147223c394269ad6aa17a37bf51c29b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad63d4467c899b7788eb625a6313c384c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad63d4467c899b7788eb625a6313c384c"></a>
<a class="el" href="classArRobotJoyHandler.html">ArRobotJoyHandler</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myRobotJoyHandler</b></td></tr>
<tr class="separator:ad63d4467c899b7788eb625a6313c384c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6229edcbb9ee37f7842bc2685a2a1ea5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6229edcbb9ee37f7842bc2685a2a1ea5"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myScanNumber</b></td></tr>
<tr class="separator:a6229edcbb9ee37f7842bc2685a2a1ea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56cdceab78ffb10bef2e52d096ddb19d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56cdceab78ffb10bef2e52d096ddb19d"></a>
<a class="el" href="classArSectors.html">ArSectors</a>&#160;</td><td class="memItemRight" valign="bottom"><b>mySectors</b></td></tr>
<tr class="separator:a56cdceab78ffb10bef2e52d096ddb19d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42f085d9fc61832369f0640a3467cc75"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42f085d9fc61832369f0640a3467cc75"></a>
<a class="el" href="classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myStartTime</b></td></tr>
<tr class="separator:a42f085d9fc61832369f0640a3467cc75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08016a2653c7c38512ab6605f5e9d461"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08016a2653c7c38512ab6605f5e9d461"></a>
std::list&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myTags</b></td></tr>
<tr class="separator:a08016a2653c7c38512ab6605f5e9d461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7ac215e9674245171abeed884903ffe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7ac215e9674245171abeed884903ffe"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myTakeReadingExplicit</b></td></tr>
<tr class="separator:af7ac215e9674245171abeed884903ffe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaff3b38c4207a7291ee4989837a1e593"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaff3b38c4207a7291ee4989837a1e593"></a>
<a class="el" href="classArFunctorC.html">ArFunctorC</a>&lt; <a class="el" href="classArLaserLogger.html">ArLaserLogger</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myTaskCB</b></td></tr>
<tr class="separator:aaff3b38c4207a7291ee4989837a1e593"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29c0a50777eb5152175a65783391d912"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29c0a50777eb5152175a65783391d912"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myUseReflectorValues</b></td></tr>
<tr class="separator:a29c0a50777eb5152175a65783391d912"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a59da5128ebd13154ba5629a2eb4a39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a59da5128ebd13154ba5629a2eb4a39"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myWrote</b></td></tr>
<tr class="separator:a5a59da5128ebd13154ba5629a2eb4a39"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This class can be used to create log files for the laser mapper. </p>
<p>This class has a pointer to a robot and a laser... every time the robot has EITHER moved the distDiff, or turned the degDiff, it will take the current readings from the laser and log them into the log file given as the fileName to the constructor. Readings can also be taken by calling takeReading which explicitly tells the logger to take a reading.</p>
<p>The class can also add goals, see the constructor arg addGoals for information about that... you can also explicitly have it add a goal by calling addGoal.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="LaserLogFileFormat.html">Laser Scan Log File Format</a> for details on the laser scan log output file format. </dd></dl>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ad8d94145940256823ad2490a3b021f4b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ArLaserLogger::ArLaserLogger </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArRobot.html">ArRobot</a> *&#160;</td>
          <td class="paramname"><em>robot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArLaser.html">ArLaser</a> *&#160;</td>
          <td class="paramname"><em>laser</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>distDiff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>degDiff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fileName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>addGoals</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArJoyHandler.html">ArJoyHandler</a> *&#160;</td>
          <td class="paramname"><em>joyHandler</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>baseDirectory</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>useReflectorValues</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArRobotJoyHandler.html">ArRobotJoyHandler</a> *&#160;</td>
          <td class="paramname"><em>robotJoyHandler</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::map&lt; std::string, <a class="el" href="classArRetFunctor3.html">ArRetFunctor3</a>&lt; int, <a class="el" href="classArTime.html">ArTime</a>, <a class="el" href="classArPose.html">ArPose</a> *, <a class="el" href="classArPoseWithTime.html">ArPoseWithTime</a> * &gt; *, <a class="el" href="structArStrCaseCmpOp.html">ArStrCaseCmpOp</a> &gt; *&#160;</td>
          <td class="paramname"><em>extraLocationData</em> = <code>NULL</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::list&lt; <a class="el" href="classArLaser.html">ArLaser</a> * &gt; *&#160;</td>
          <td class="paramname"><em>extraLasers</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor. </p>
<dl class="section note"><dt>Note</dt><dd>The <em>laser</em> must be configured, connected and have read at least one set of data from the laser already (the data received is used to calculate FOV information saved in the .2d)</dd>
<dd>
A packet handler will be added for a packet with ID 0x96, but will will not indicate the packet was handled. This will result in warnings printed to the log unless another packet handler handles this packet. ArServerHandlerMapping does this, but standalone use, such as in sickLogger.cpp, does not. This is done so that multiple packet handlers may receive 0x96. (This packet is used for an advanced feature of mapping with some MobileRobots products but which isn't usually needed for must robot maps.)</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">robot</td><td>The robot to attach to</td></tr>
    <tr><td class="paramname">laser</td><td>the laser to log readings from.</td></tr>
    <tr><td class="paramname">distDiff</td><td>the distance traveled at which to take a new reading</td></tr>
    <tr><td class="paramname">degDiff</td><td>the degrees turned at which to take a new reading</td></tr>
    <tr><td class="paramname">fileName</td><td>the file name in which to put the log</td></tr>
    <tr><td class="paramname">addGoals</td><td>whether to add goals automatically. if true then <a class="el" href="classArLaserLogger.html" title="This class can be used to create log files for the laser mapper. ">ArLaserLogger</a> adds a handler for the 'g' key to any <a class="el" href="classArKeyHandler.html" title="Perform actions when keyboard keys are pressed. ">ArKeyHandler</a> that has been previously created, and will also monitor the robot joystick for the goal button pressed, and register a handler to <em>joyHandler</em> if provided as well.</td></tr>
    <tr><td class="paramname">joyHandler</td><td>joystick interface to allow control from a computer joystick, including placing goals with the second joystick button </td></tr>
    <tr><td class="paramname">baseDirectory</td><td>directory to place the output file <em>fileName</em> in </td></tr>
    <tr><td class="paramname">useReflectorValues</td><td>if true, include laser special-reflectance information </td></tr>
    <tr><td class="paramname">robotJoyHandler</td><td>if given, use this as the interface to the robot's own joystick </td></tr>
    <tr><td class="paramname">extraLocationData</td><td>if given, place this additional information in the output log file </td></tr>
    <tr><td class="paramname">extraLasers</td><td>if given, include data from these lasers in the laser log in addition to the primary laser <em>laser</em>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a4130b7bbe7d31b18cc3e4cfdebb38bad"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArLaserLogger::addInfoToLog </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a string to the log file without a tag for where or when we are. </p>
<p>The robot MUST be locked before you call this function, so that this function is not adding to a list as the robotTask is using it.</p>
<p><b>Java and Python Wrappers:</b> Not available in Java or Python wrapper libraries.</p>
<p>This function takes the given tag and puts it into the log file by itself </p>

</div>
</div>
<a class="anchor" id="acd67438efbbf9db3a8d8c887dd9a8889"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArLaserLogger::addInfoToLogPlain </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Same as addToInfo, but does it without marking robot position. </p>
<p>The robot MUST be locked before you call this function, so that this function is not adding to a list as the robotTask is using it.</p>
<p>This function takes the given tag and puts it into the log file by itself </p>

</div>
</div>
<a class="anchor" id="ad551fb95d5451da5866cbab25987e590"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArLaserLogger::addTagToLog </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds a string to the log file with a tag at the given moment. </p>
<p>The robot MUST be locked before you call this function, so that this function is not adding to a list as the robotTask is using it.</p>
<p><b>Java and Python Wrappers:</b> Not available in Java or Python wrapper libraries.</p>
<p>This function takes the given tag and puts it into the log file along with a tag as to where the robot was and when in the mapping it was</p>
<p><b>Java and Python Wrappers:</b> Not available in Java or Python wrapper libraries. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classArLaserLogger.html#a21ebf19cc66b73847504e094ec4872b8" title="Same ass addToLog, but no varargs, wrapper for java. ">addTagToLogPlain()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a21ebf19cc66b73847504e094ec4872b8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArLaserLogger::addTagToLogPlain </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Same ass addToLog, but no varargs, wrapper for java. </p>
<p>The robot MUST be locked before you call this function, so that this function is not adding to a list as the robotTask is using it.</p>
<p>This function takes the given tag and puts it into the log file along with a tag as to where the robot was and when in the mapping it was </p>

</div>
</div>
<a class="anchor" id="a2be0b2e8120ee205ef7ccc2545d5bba8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArLaserLogger::internalTakeLaserReading </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArLaser.html">ArLaser</a> *&#160;</td>
          <td class="paramname"><em>laser</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>laserNumber</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>use the adjusted raw readings if we can, otherwise just use the raw readings like before</p>
<p>Note that the the sick1: or scan1: must be the last thing in that timestamp, ie that you should put any other data before it.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>ArLaserLogger.h</li>
<li>ArLaserLogger.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classArLaserLogger.html">ArLaserLogger</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
